package com.atguigu.spring5_webflux.reactor8;

import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.sql.SQLOutput;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 */
public class TestReactor {
    public static void main(String[] args) {
        // 用Flux发送多个元素值
        Flux.just(1,2,3,4);
        // 用Mono发送一个元素值
        Mono.just(1);

        // just是最直接的声明数据流的方式,还有其他更丰富的声明方式
        // 声明数组
        Integer[] array = {1,2,3,4};
        Flux.fromArray(array);
        // 声明列表
        List<Integer> list = Arrays.asList(array);
        Flux.fromIterable(list);
        // 声明流
        Stream<Integer> stream = list.stream();
        Flux.fromStream(stream);
//        Flux.error(new Exception("模拟错误信号"));
//        Mono.error(new Exception("模拟错误信号"));

        // 调用just或者其他方法只是声明数据流，数据流并没有发出，只有进行subscribe订阅之后才会触发数据流，不订阅什么都不会发生的
        Flux.just(1,2,3,4).subscribe(System.out :: print);  // Java 8 中我们可以通过 `::` 关键字来访问类的构造方法，对象方法，静态方法。
        Mono.just(1).subscribe(System.out :: print);
    }
}
